namespace Microsoft.WowAddonStudio.Lua.RuntimeService.WowBench
{
	/// <summary>
	/// Defines an interface for navigable objects.
	/// </summary>
	/// <typeparam name="T">The navigable entry type.</typeparam>
	public interface INavigable<T>
	{
		/// <summary>
		/// Gets the current command entry.
		/// </summary>
		T Current { get; }

		/// <summary>
		/// Gets the next navigable entry.
		/// </summary>
		T Next { get; set; }

		/// <summary>
		/// Gets the previous navigable entry.
		/// </summary>
		T Previous { get; set; }

		/// <summary>
		/// Gets the last navigable entry.
		/// </summary>
		T Last { get; set; }

		/// <summary>
		/// Gets the first navigable entry.
		/// </summary>
		T First { get; set; }

		/// <summary>
		/// Reset the current chain of navigable entries.
		/// </summary>
		void Reset();
	}
}